package com.fowo.api.ptt.enitty;

import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.annotation.*;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fowo.api.common.annotaion.JoinField;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;

/**
 * 打印模版类型表实体
 * @author yl_ls
 */
@Getter
@Setter
@JsonInclude(JsonInclude.Include.NON_NULL)
@TableName(value = "sys_print_template_type", autoResultMap = true)
public class PrintTemplateType implements Serializable {
    /**
     * 主键编号
     */
    @TableId(type = IdType.ASSIGN_ID)
    private Long id;

    /**
     * 父级编号
     */
    private Long parentId;

    /**
     * 所属
     */
    private Long groupId;

    /**
     * 是否为树结构的叶节点（不是作为目录）
     */
    private Boolean leaf;

    /**
     * 类型名称
     */
    private String typeName;

    /**
     * 权限键，表示需要有对应的权限才能看见和修改此类型和下属模版
     */
    private String authority;

    /**
     * 默认模版编号
     */
    @JoinField(PrintTemplate.class)
    private Long defaultTemplateId;

    /**
     * 排序字段，从小到大
     */
    private Integer sort;

    /**
     * 更新人
     */
    @TableField(value = "`last_update_user`")
    @Schema(title = "更新人")
    private Long lastUpdateUser;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(title = "更新时间")
    private java.util.Date lastUpdateTime;

    /**
     * 创建人
     */
    @Schema(title = "创建人")
    private Long createUser;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(title = "创建时间")
    private java.util.Date createTime;

    /**
     * 删除标记
     */
    @TableLogic
    @Schema(title = "删除标记")
    private Boolean delFlag;

    /**
     * 模板定义数据
     */
    @TableField(typeHandler = JacksonTypeHandler.class)
    private JSONObject data;
}
